A heterogeneous computing platform (HCP) refers to a type of data processing system that includes a host processor and one or more other different processing devices. The host processor is typically implemented as a central processing unit (CPU). The host processor is coupled to the other processing devices through interface circuitry. The other processing devices are architecturally different from the host processor. Still, the processing devices are capable of performing operations, e.g., executing applications, offloaded from the host processor and making results of the operations available to the host processor.
In some cases, the processing devices are adapted to execute program code. Such processing devices typically have an instruction set architecture that differs from the host processor. Examples of these other processing devices include, but are not limited to, graphics processing unit(s) (GPUs), digital signal processor(s) (DSPs), and so forth.
In other cases, the processing devices that perform operations offloaded from the host processor include devices adapted to hardware accelerate program code. These processing devices include circuitry that implements the offloaded operation as hardware. The circuitry operates in a manner that is functionally equivalent to execution of the program code (e.g., the offloaded operation). Examples of processing devices capable of hardware acceleration include programmable integrated circuits (ICs) such as field programmable gate arrays (FPGAs), partially programmable ICs, application specific ICs (ASICs), and so forth. Appreciably, an HCP may include a combination of processing devices where one or more are adapted to execute program code and one or more others are adapted to hardware accelerate program code.
Implementing program code in hardware may provide a variety of benefits such as faster operation, reduced power consumption, redundancy, etc. Despite the fact that implementing an application as hardware provides benefits that may or may not include faster operation, the implementation of program code and/or an application in hardware is typically referred to as “hardware acceleration.”
In any case, the host processor is charged with offloading operations to the processing devices and retrieving results from the processing devices. The ability of the host processor to efficiently move the necessary data to and from the processing devices can significantly affect the overall efficiency and performance of the HCP.